var myMessages = [ 'info', 'warning', 'error', 'success' ]; // define the
// messages types
var myMessagesDESC = [ 'Información', 'Warning', 'Error', 'Completado' ]; // define
// the
// messages
// types

function hideAllMessages() {
	var messagesHeights = new Array(); // this array will store height for each

	for (i = 0; i < myMessages.length; i++) {
		// messagesHeights[i] = $('.' + myMessages[i]).outerHeight();
		// $('.' + myMessages[i]).css('top', -messagesHeights[i]); //move
		// element outside viewport
		$('.' + myMessages[i]).animate({
			top : -$('.' + myMessages[i]).outerHeight()
		}, 200);
		$('#' + myMessages[i] + '-sms').attr('VISIBLE', 'NO');
		//$('#fadeCapa').fadeOut(500).css('display', 'none');
	}
}

function hideMessage(event) {
	$('.' + event.data.name).animate({
		top : -$('.' + event.data.name).outerHeight()
	}, 500);
	$('#' + event.data.name + '-sms').attr('VISIBLE', 'NO');
	//$('#fadeCapa').fadeOut(500).css('display', 'none');
}

function hideMessageEvent(event) {
	$('.' + event).animate({
		top : -$('.' + event).outerHeight()
	}, 500);
	$('#' + event + '-sms').attr('VISIBLE', 'NO');
	//$('#fadeCapa').fadeOut(500).css('display', 'none');
}

function showMessage(event, modal) {

	if (event.data.modal)
		$('#fadeCapa').fadeIn(500).css('display', 'block');
	else
		$('#fadeCapa').fadeIn(500).css('display', 'none');

	for ( var i = 0; i < myMessages.length; i++) {
		if (($('#' + myMessages[i] + '-sms').attr('VISIBLE') == 'SI')
				&& (myMessages[i] != event.data.name)) {
			hideMessageEvent(myMessages[i]);
		}
		// $("body").delegate('.'+ myMessages[i], "click", { name: myMessages[i]
		// }, hideMessage );
	}

	if ($('#' + event.data.name + '-sms').attr('VISIBLE') == 'NO') {
		// Recorremos todos los items y buscamos el que está a si y lo subimos
		$('#' + event.data.name + '-sms').attr('VISIBLE', 'SI');
		// Se oculta todo
		hideAllMessages();
		// Se muestra el mensaje
		$('.' + event.data.name).animate({
			top : "0"
		}, 500);
		// A los 5 seguntos se quita
		// $('.'+event.data.name).delay(5000).animate({top:
		// -$('.'+event.data.name).outerHeight()}, 500);
	} else
		hideMessage(event);
}

function showMessageEvent(event, modal) {

	if (modal)
		$('#fadeCapa').fadeIn(500).css('display', 'block');
	else 
		$('#fadeCapa').fadeIn(500).css('display', 'none');
  
	for ( var i = 0; i < myMessages.length; i++) {
		if (($('#' + myMessages[i] + '-sms').attr('VISIBLE') == 'SI')
				&& (myMessages[i] != event)) {
			hideMessageEvent(myMessages[i]);
		}
		// $("body").delegate('.'+ myMessages[i], "click", { name: myMessages[i]
		// }, hideMessage );
	}

	if ($('#' + event + '-sms').attr('VISIBLE') == 'NO') {
		// Recorremos todos los items y buscamos el que está a si y lo subimos
		$('#' + event + '-sms').attr('VISIBLE', 'SI');
		// Se oculta todo
		hideAllMessages();
		// Se muestra el mensaje
		$('.' + event).animate({
			top : "0"
		}, 500);
		// A los 5 seguntos se quita
		// $('.'+event).delay(5000).animate({top: -$('.'+event).outerHeight()},
		// 500);
	} else
		hideMessageEvent(event);
  
}

// ****************************************************************************************************
// Modifica los mensajes de las cabeceras de info, error, ...
function fnc_SMS_Change(i, cabecera, cuerpo, modal) {

	hideAllMessages();

	// Definición en functions.external-sms.js
	// var myMessages = ['info','warning','error','success']; // define the
	// messages types

	// Cambiamos la cabecera
	$('#' + myMessages[i] + '-sms-head').text(cabecera);

	// Cambiamos el cuerpo
	$('#' + myMessages[i] + '-sms-body').text(cuerpo);

	showMessageEvent(myMessages[i], modal);

}

$(document).ready(function() {

	// Initially, hide them all
	hideAllMessages();

	// Show message
	// for(var i=0;i<myMessages.length;i++) {
	// $("body").delegate('.'+ myMessages[i] +'-trigger', "click", { name:
	// myMessages[i], modal: true }, showMessage );
	// }

	// When message is clicked, hide it
	for ( var i = 0; i < myMessages.length; i++) {
		$("body").delegate('.' + myMessages[i], "click", {
			name : myMessages[i]
		}, hideMessage);
	}

});
